<!doctype html> 
<title>Whitespace in attribute values tests</title>
<script src=../../resources/testharness.js></script>
<script src=../../resources/testharnessreport.js></script>
<script src=resources/whitespace-helper.js></script>
<svg id="testcontainer">
	<defs>
		<marker/>
		<stop/>
		<filter>
			<feTurbulence></feTurbulence>
		</filter>
	</defs>
</svg>
<div id=log></div>
<script>
var svg = document.querySelector("svg");

// test length values
var EPSILON = Math.pow(2, -24); // float epsilon
var whitespace = [ "", " ", "   ", "\r\n\t ", "\f" ];
var garbage = [ "a", "e", "foo", ")90" ];
var validunits = [ "", "em", "ex", "px", "in", "cm", "mm", "pt", "pc", "%" ];

testType("<number>",
		 document.querySelector("stop"),
		 "offset",
		 0, // expected default value
		 whitespace,
		 [ "-47", ".1", "0.35", "1e-10", "+32", "+17E-1", "17e+2" ], // valid
		 [ "" ], // valid units
		 garbage,
		 function(elm, value) { assert_approx_equals(elm.offset.baseVal, parseFloat(value), EPSILON); },
		 function(elm, expected) { assert_approx_equals(elm.offset.baseVal, expected, EPSILON); } );

testType("<percentage>",
		 document.querySelector("stop"),
		 "offset",
		 0, // expected default value
		 whitespace,
		 [ "-47", ".1", "0.35", "1e-10", "+32", "+17E-1", "17e+2" ], // valid
		 [ "%" ], // valid units
		 garbage,
		 function(elm, value) { assert_approx_equals(elm.offset.baseVal, parseFloat(value)/ 100, EPSILON); },
		 function(elm, expected) { assert_approx_equals(elm.offset.baseVal, expected, EPSILON); } );

testInvalidType("<number>",
         document.querySelector("stop"),
         "offset",
         0, // expected default value
         whitespace,
         [ Number.NaN, Number.POSITIVE_INFINITY, Number.NEGATIVE_INFINITY, "fnord", "E", "e", "e+", "E-", "-", "+", "-.", ".-", ".", "+.", ".E0", "e1" ], // invalid
         [ "" ], // valid units
         function(elm, value) { assert_approx_equals(elm.offset.baseVal, parseFloat(value), EPSILON); },
         function(elm, expected) { assert_approx_equals(elm.offset.baseVal, expected, EPSILON); } );

testInvalidType("<percentage>",
         document.querySelector("stop"),
         "offset",
         0, // expected default value
         whitespace,
         [ Number.NaN, Number.POSITIVE_INFINITY, Number.NEGATIVE_INFINITY, "fnord", "E", "e", "e+", "E-", "-", "+", "-.", ".-", ".", "+.", ".E0", "e1" ], // invalid
         [ "%" ], // valid units
         function(elm, value) { assert_approx_equals(elm.offset.baseVal, parseFloat(value)/ 100, EPSILON); },
         function(elm, expected) { assert_approx_equals(elm.offset.baseVal, expected, EPSILON); } );


</script>
